/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Negocio;

import java.text.DateFormat;
import java.util.Date;

/**
 *
 * @author marcel
 */
public abstract class Telefone {
    private String nomeUsuario;
    private String numero;
    protected String endereco;
    private Date dataInstalacao;

    // atributo de classe
    protected DateFormat formatador = DateFormat.getDateInstance();

    // construtor
    public Telefone(String nome, String numero,
                    String endereco, Date data){
         this.setNomeUsuario(nome);
         this.setNumero(numero);
         this.setEndereco(endereco);
         this.setDataInstalacao(data);
    }

    // destrutor
    protected void finalize(){
        System.out.println("Passando no destrutor de telefone "+this.numero);
    }

    public abstract float getValorBasico();

    /**
     * @return the nomeUsuario
     */
    public String getNomeUsuario() {
        return nomeUsuario;
    }

    /**
     * @param nomeUsuario the nomeUsuario to set
     */
    public void setNomeUsuario(String nomeUsuario) {
        this.nomeUsuario = nomeUsuario;
    }

    /**
     * @return the numero
     */
    public String getNumero() {
        return numero;
    }

    /**
     * @param numero the numero to set
     */
    public void setNumero(String numero) {
        if (numero == null
            || numero.length() < 8)
            throw new IllegalArgumentException("Número do telefone inválido");
        this.numero = numero;
    }

    /**
     * @return the endereco
     */
    public String getEndereco() {
        return endereco;
    }

    /**
     * @param endereco the endereco to set
     */
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    /**
     * @return the dataInstalacao
     */
    public Date getDataInstalacao() {
        return dataInstalacao;
    }

    /**
     * @param dataInstalacao the dataInstalacao to set
     */
    public void setDataInstalacao(Date dataInstalacao) {
        this.dataInstalacao = dataInstalacao;
    }



}
